package com.pureut.system.service;


import com.pureut.system.domain.MaterialBomHalf;
import com.pureut.system.domain.dto.MaterialBomHalfDetailDto;
import com.pureut.system.domain.dto.MaterialBomHalfDto;
import com.pureut.system.domain.dto.MaterialBomHalfViewDto;
import com.pureut.system.domain.dto.BomDetailListDto;
import com.pureut.system.domain.vo.MaterialBomVo;
import com.pureut.system.domain.vo.MaterialNewBomAddVo;

import java.util.List;

/**
 * @author: CM
 * @date: 2023/6/13    10:10
 */

public interface IMaterialBomHalfService {

    /**
     * Bom列表
     * @param  materialBomVo
     * @return
     */
    List<MaterialBomHalfDto> selectBomList(MaterialBomVo materialBomVo);

    /**
     *  新增Bom信息
     * @param materialNewBomAddVo
     * @return
     */
    boolean insertBom(MaterialNewBomAddVo materialNewBomAddVo) throws Exception;

    /**
     * 查了Bom信息
     * @param bomId
     * @return
     */
    MaterialBomHalfViewDto view(long bomId);

    /**
     * 删除Bom信息
     * @param bomId
     * @return
     */
    boolean deleteMaterialBomById(long bomId);

    /**
     * 修改Bom信息
     * @param materialNewBomAddVo
     * @return
     */
    boolean updateMaterialBomEdit(MaterialNewBomAddVo materialNewBomAddVo);

    /**
     * 获取bom第一层级数据列表（委外订单新增使用）
     */
    List<MaterialBomHalfDto> getOneLevelList(MaterialBomVo materialBomVo);

    /**
     * 获取BOM信息(库存量)
     */
    List<MaterialBomHalfDetailDto> selectlBomDetailListInventory(long bomId);

    /**
     * 获取BOM信息(脱脂查询使用库存量)
     */
    List<MaterialBomHalfDetailDto> selectlBomDetailListInventoryTz(long bomId);



    List<MaterialBomHalfDto> copyBomList(MaterialBomHalf materialBomHalf);

    /**
     * BOM树结构列表
     * @param materialBomHalf
     * @return
     */
    List<MaterialBomHalfDto> BomList(MaterialBomHalf materialBomHalf);

    /**
     * 根据编码获取半成品bom信息(fegin调用)
     */
    List<BomDetailListDto> getHalfData(String materialCode);
}
